/**
 *  1、定义生成器函数
 *  2、获取 Generator 对象
 *  3、next 方法
 *  4、 for of 遍历 Generator 对象
 */

function* testGenerator (params) {
    console.log('此函数是否执行了')
    yield '锄禾日当午'
    yield '汗滴禾下土'
    yield '设置盘中餐'
    yield '粒粒皆辛苦'
}
const generator = testGenerator()
// console.log(generator.next())

// *  3、next 方法 返回  {value: '锄禾日当午', done: false} 结构对象
// done 是否执行完毕，false 可以继续执行，true已经执行完毕

// *  4、 for of 遍历 Generator 对象[可迭代对象]
for (const iterator of generator) {
    console.log(iterator)
}
/**
 * for of 与 for in 的区别 
 * 1：都可以遍历数组 of 拿到的是值；in 拿到的是索引
 * 2：in 可以遍历对象；of只能遍历 可迭代对象【set、map、string、array】
 */
for (const key in generator) {
    const element = object[key]
    console.log(element)
}

function creatDom (node, inner, eventType = 'click', callBack) {
    const list = node.split('&')
    const btn = document.createElement(list[0])
    const div = document.createElement('div')
    div.style.padding = '10px'
    if (list[1]) {
        btn.type = list[1]
    }
    btn.innerHTML = inner
    document.body.appendChild(div)
    div.appendChild(btn)
    if (callBack && callBack instanceof Function) {
        btn.addEventListener(eventType, callBack)
    }
}
creatDom('h2', 'Generator')
// creatDom('button', '测试请求接口', 'click', queryFetch)

function* queryFetch () {
    yield axios('http://hmajax.itheima.net/api/city?pname=北京')
    yield axios('http://hmajax.itheima.net/api/city?pname=天津')

}
const cityData = queryFetch()
// console.log(cityData.next())
cityData.next().value.then(res => {
    console.log(res)
    return cityData.next().value
}).then(res => {
    console.log(res)
})
// for (const iterator of cityData) {
//     console.log(iterator)
// }